package com.jrx.anytxn.feign.api.service;


import com.jrx.anytxn.feign.api.request.UserInfoUpdateRequest;
import com.jrx.anytxn.feign.api.response.LimitRenewResponse;
import com.jrx.anytxn.feign.api.response.PrChannelConfigRes;
import com.jrx.anytxn.feign.api.response.TlUserContractLogListBean;
import com.jrx.anytxn.feign.api.response.TxnPayRefundRes;
import com.jrx.anytxn.feign.api.response.UserContractLogRes;
import com.jrx.anytxn.feign.api.response.*;
import com.jrx.anytxn.feign.gateway.bean.ApiResponse;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;

import java.util.List;


@FeignClient(name="anyAPI-Server")
public interface IUserApiService {

    @PostMapping(value = "/api/contract/getContractList",consumes = "application/json;charset=UTF-8")
    ApiResponse<TlUserContractLogListBean> getContractList(@RequestBody String apiContractBean);

    @PostMapping(value = "/api/loanService/funResultCallBack",consumes = "application/json;charset=UTF-8")
    ApiResponse funResultCallBack(@RequestBody String reqJson);

    @PostMapping(value = "/api/contract/getUserContractLogListByUserId",consumes = "application/json;charset=UTF-8")
    ApiResponse<UserContractLogRes> getUserContractList(@RequestBody String userContractLogReq);

    /*借据结清通知信息集团*/
    @PostMapping(value = "/api/userService/loanPayOffNotify",consumes = "application/json;charset=UTF-8")
    ApiResponse<UserContractLogRes> loanPayOffNotify(@RequestBody String loanPayOffNotifyReq);
    /**
     * 用户证件信息更新
     * @param usrInfoUpdateRequest
     * @return
     */
    @PostMapping(value = "/api/userService/userInfoUpdate", consumes = "application/json;charset=UTF-8")
    ApiResponse<UserInfoUpdateRequest> updateCustomerInfo(@RequestBody String usrInfoUpdateRequest);

    @PostMapping(value = "/api/systemService/getPrChannelConfig",consumes = "application/json")
    ApiResponse<PrChannelConfigRes> getPrChannelConfig(@RequestBody String json);

    @PostMapping(value = "/api/userService/queryInviteInfo",consumes = "application/json")
    ApiResponse<UserInfoRes> queryInviteInfo(@RequestBody String json);

    @PostMapping(value = "/api/couponService/activity/sendYdCoupon",consumes = "application/json")
    ApiResponse sendYdCoupon(@RequestBody String json);

    /**
     * 通知api放款结果
     *
     * @param json
     * @return
     */
    @PostMapping(value = "/api/loanService/loanResultCallBack", consumes = "application/json;charset=UTF-8")
    ApiResponse loanResultCallBack(@RequestBody String json);
    /**
     * 补充二类户开户时联网核查
     * @param json
     * @return
     */
    @PostMapping(value = "/api/bankCardService/internetCheckAgain",consumes = "application/json;charset=UTF-8")
    ApiResponse internetCheckAgain(@RequestBody String json);

    /**
     * 额度续签查询API
     * @param json
     * @return
     */
    @PostMapping(value = "/api/limit/renewal/query",consumes = "application/json")
    ApiResponse<LimitRenewResponse> limitRenewQuery(@RequestBody String json);

    /**
     * 额度续签申请API
     * @param json
     * @return
     */
    @PostMapping(value = "/api/limit/renewal",consumes = "application/json;charset=UTF-8")
    ApiResponse<LimitRenewResponse> limitRenew(@RequestBody String json);

    /**
     * 请求微信退款
     * @param txnPayRefundReq
     * @return
     */
    @PostMapping(value = "/api/RepaymentService/txnPayRefund",consumes = "application/json")
    ApiResponse<TxnPayRefundRes> txnPayRefund(@RequestBody String txnPayRefundReq);

    /**
     * 产品激活信息查询
     * @param productActiveReq
     * @return
     */
    @PostMapping(value = "/api/userService/activeInfoQuery",consumes = "application/json")
    ApiResponse<List<ProductActiveDto>> activeInfoQuery(@RequestBody String productActiveReq);

    /**
     * 手机号修改
     * @param phoneModifyReq
     * @return
     */
    @PostMapping(value = "/api/userService/phoneModify",consumes = "application/json")
    ApiResponse phoneModify(@RequestBody String phoneModifyReq);

    /**
     * 额度续签申请API
     * @param json
     * @return
     */
    @PostMapping(value = "/api/limit/logout",consumes = "application/json;charset=UTF-8")
    ApiResponse logout(@RequestBody String json);

    /**
     * 兴安花卡注销
     * @param json
     * @return
     */
    @PostMapping(value = "/api/bankCardService/accountLogOff",consumes = "application/json;charset=UTF-8")
    ApiResponse<CardLogOffRes> accountLogOff(@RequestBody String json);

}
